#!/bin/bash  
  
# 输出标题  
print_header() {  
    echo "========================== 服务器巡检报告 =========================="  
    echo "日期: $(date +"%Y年 %m月 %d日 %A %T %Z")"  
    echo "系统时间: $(date +"%T")"  
    echo "主机名: $(hostname)"  
    echo "内网IP: $(hostname -I | awk '{print $1}')"  
    echo "操作系统: $(cat /etc/os-release | grep '^PRETTY_NAME=' | cut -d= -f2 | tr -d '\"')"  
    echo "内核版本: $(uname -r)"  
    echo "========================= 基础信息 ========================="  
}  
  
# 输出CPU信息  
print_cpu_info() {  
    cpu_model=$(lscpu | grep 'Model name' | awk '{print $NF}')  
    if [ -z "$cpu_model" ]; then  
        cpu_model=$(cat /proc/cpuinfo | grep 'model name' | uniq | awk '{print $NF}')  
    fi  
    echo "CPU 型号: $cpu_model"  
    echo "CPU 核心数: $(nproc)"  
}  
  
# 输出内存信息  
print_memory_info() {  
    echo "内存大小: $(free -h | awk '/^Mem:/{print $2}')"  
}  
  
# 输出磁盘信息  
print_disk_info() {  
    echo "磁盘大小（/）: $(df -h / | awk 'NR==2{print $2, $3, $4, $5}')"  
}  
  
# 输出显卡信息（如果存在）  
print_gpu_info() {  
    if lspci | grep -q VGA; then  
        echo "显卡信息:"  
        lspci | grep -i vga -A 3  
    else  
        echo "显卡: 不存在显卡设备"  
    fi  
}  
  
# 输出服务信息  
print_services() {  
    echo "========================= 服务信息 ========================="  
    echo "运行的服务:"  
    systemctl list-units --type=service --state=running --no-pager --no-legend  
    echo "失败的服务:"  
    systemctl list-units --type=service --state=failed --no-pager --no-legend  
    # 如果需要列出所有服务，可以使用以下命令（但可能会很长）：  
    # systemctl list-units --type=service --all --no-pager --no-legend  
}  
  
# 主函数  
main() {  
    print_header  
    print_cpu_info  
    print_memory_info  
    print_disk_info  
    print_gpu_info  
    print_services  
    echo "========================== 巡检报告结束 =========================="  
}  
  
# 执行主函数  
main

